/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controllers;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.Map;
import models.*;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;
import play.db.jpa.GenericModel.JPAQuery;
import play.libs.Mail;
import play.mvc.Controller;

/**
 *
 * @author Administrador
 */
public class registrarDisponibilidad extends Controller {

    public static void registrarDisponibilidad() throws EmailException {

        String periodo = firstController.periodo;
        String username = firstController.username;
        Docente docente = Docente.connect(username);
        String nombres=docente.doc_vcNombres;
        String apPaterno=docente.doc_vcApellidoPaterno;
        String apMaterno=docente.doc_vcApellidoMaterno;
        Integer[] array = new Integer[85];
        JPAQuery DCQ= Docente.find("doc_vcCodigo", username);
        Docente DC =DCQ.first();
        System.out.println("\n***Disponibilidad Horaria");
        Iterator it1 = (validarDisponibilidad.hm_d).entrySet().iterator();
        while (it1.hasNext()) {
            horarioOption horario = (horarioOption) ((Map.Entry) it1.next()).getValue();
            new Disponibilidad(username,horario.getDisp_index(),horario.getDia(), Integer.toString(horario.getHora()),periodo).save();
            System.out.println("Guardo en la BD: user =" + username + " dia =" + horario.getDia() + " hora =" + horario.getHora());
        }

        for (int i = 0; i < 85; i++) {
            array[i] = 0;
        }
        Iterator it1_aux = (validarDisponibilidad.hm_d).entrySet().iterator();
        while (it1_aux.hasNext()) {
            Integer p = (Integer) ((Map.Entry) it1_aux.next()).getKey();
            array[p] = 1;
        }

        System.out.println("\n***Cursos de Preferencia");
        Integer k = 1;
        Iterator it2 = (validarDisponibilidad.hm_c).entrySet().iterator();
        while (it2.hasNext()) {
            courseOption curso = (courseOption) ((Map.Entry) it2.next()).getValue();
            new cursoPreferencia(username, curso.getFacultad(), curso.getEap(), curso.getCurso(), periodo).save();
            System.out.println("Curso " + k + " es :" + curso.getFacultad() + " -> " + curso.getEap() + " -> " + curso.getCurso());
            k++;
        }
        SemestreAcademico SA = SemestreAcademico.find("order by id DESC").first();       
        if(SA==null){
            System.out.println("Esta Vacio.....");
            SA = new SemestreAcademico();
        }
        String fecha=(new SimpleDateFormat("dd/MM/yy")).format(new Date());
        String hora=(new SimpleDateFormat("h:mm a")).format(new Date());
        new registroEnviados(username, periodo,fecha,hora).save();
        
        System.out.println("\nEnviando el correo a ..."+docente.doc_vcCorreo1);
        
        enviarCorreo(docente, periodo,hora, fecha);
        
              
        
        renderTemplate("Confirmacion/constancia.html", username,nombres,apPaterno,apMaterno,array,fecha,hora,SA,DC);

    }
    
    private static void enviarCorreo(Docente docente, String periodo, String hora, String fecha) throws EmailException {
        SimpleEmail email = new SimpleEmail();
        email.setFrom("proyecto.disponibilidad@gmail.com");
        ////correo del destinatario
        //email.addTo(docente.doc_vcCorreo1);
        
        email.addTo("dexter6v@gmail.com");
        email.setSubject("PRUEBA - Confirmación de envío de Disponibilidad Horaria");
        email.setMsg("Estimado Prof. "+docente.doc_vcNombres+" "+docente.doc_vcApellidoPaterno+
                ":\n\nEl presente correo es para confimarle el envío satisfactorio de su "
                + "disponibilidad horaria para el periodo "+periodo+
                "\n\nFecha de envío : "+fecha+"\n\nHora de envío : "+hora+"\n\nAtte.\nUNMSM");
        Mail.send(email); 
    }
}
